package it.afs.wicket;

import it.afs.persist.PersistentObject;

import java.io.Serializable;

/**
 * Classe che rappresenta una occorrenza di dizionario.
 * <br>
 * Altre classi possono estenderla per aggiungere altri livelli di selezione dei dati; in questo caso eseguire il corretto override di equals e hashCode
 * @author Fanta
 *
 */
public class DictionaryItem implements Serializable
{
	private static final long serialVersionUID = 1976729716656060556L;
	
	private String key, value, description;
	
	@Override
	public boolean equals(Object o)
	{
		if (this == o) return true;
        if (o == null ||
            !(o instanceof PersistentObject)) {

            return false;
        }
        
        DictionaryItem other = (DictionaryItem)o;
		
		return this.key.equals(other.getKey()) && this.value.equals(other.getValue());
	}
	
	@Override
	public int hashCode()
	{
		if(key == null || value == null)
			return super.hashCode();
		else
		{
			String id = key + value;
			return id.hashCode();
		}
	}
	
	public String toChoiceString()
	{
		return String.format("%s - %s", getValue(), getDescription());
	}
	
	@Override
	public String toString() {
		return String.format("%s [%s:%s]", this.getClass().getName(), getKey(), getValue());
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
}
